--- title: "05-FRP 自建内网穿透" created: 2026-08-31 tags: - 项目筑基 --- # FRP 自建内网穿透 [[04-内网穿透 ngork|04篇]]里接线员是ngrok雇的 免费版地址会变还限速;[[03-Cloudflare Tunnel|Tunnel]]把接线员换成了Cloudflare 但要挂自己域名、数据走人家节点。FRP是第三条路:**把接线员换成自己**——前提是得有台带公网IP(或至少有公网端口)的VPS > 定位说明:这篇是文档学习加方案设计 FRP 我还没在自己机器上实际跑通 命令和配置都按官方文档整理 真动手时以官方仓库说明为准(全文核对点) ## 组成:一端一个程序 frp(Fast Reverse Proxy)就两个可执行文件: - **frps** 服务端 跑在VPS上 当"服务台" - **frpc** 客户端 跑在你内网的机器上 当"内线电话" ```mermaid flowchart LR A["访客
公网上任何人"] --> B["VPS: frps
监听公网端口"] B -. "frpc 主动拨出的
长连接隧道" .-> C["内网电脑: frpc"] C --> D["本地服务
SSH 22 / 网站 8080 / 远程桌面 3389"] ``` 关键在虚线那一步:**frpc 是主动去连 frps 的** 所以你内网的机器只要能上网就行 不需要公网IP——隧道建起来之后 访客敲VPS的端口 frps顺着隧道把流量递给frpc frpc转交本地服务 和ngrok原理一模一样 只是中间那台服务器从别人家换成了自己家 ## 服务端配置(VPS上) 从 [github.com/fatedier/frp releases](https://github.com/fatedier/frp/releases) 下载对应系统版本 解压出 `frps` `frps.toml` 最小配置: ```toml bindPort = 7000 auth.token = "换成一段只有你知道的随机字符串" ``` 跑起来: ``` ./frps -c frps.toml ``` 安全组/防火墙记得放行 7000 以及后面客户端要用的 remotePort。长期挂建议交给 systemd 或者 docker(VPS上docker那条路见[[10-VPS Docker 部署完整指南|VPS Docker 部署完整指南]]) ## 客户端配置(内网机器上) `frpc.toml`: ```toml serverAddr = "你VPS的公网IP" serverPort = 7000 auth.token = "与服务端一致" [[proxies]] name = "my-ssh" type = "tcp" localIP = "127.0.0.1" localPort = 22 remotePort = 6022 ``` 跑起来: ``` ./frpc -c frpc.toml ``` 之后在任何地方 `ssh -p 6022 用户名@VPS公网IP` 就会落到家里那台机器的22端口 上门服务变成"敲VPS的门 VPS帮我转进去" 网站同理:localPort 改成 8080 有两种玩法—— - 简单粗暴:type 保持 tcp remotePort=8080 直接访问 `IP:8080` 什么协议都透传 - 讲究点:type 改 http 配 customDomains 需要把域名解析到VPS 由frps按域名分流(配合DNS那套 见[[06-DNS 记录与域名实战|DNS 记录与域名实战]]) ## NAT VPS 能不能当 frps 我的VPS是NAT型([[02-NAT VPS|NAT VPS]]那篇记过)——没有独立公网IP 只有商家映射好的一段共享端口 这种机器想当frps: - bindPort 必须落在商家给你的可用端口段内 - 每个remotePort也得提前在商家面板里映射好 不是想开几号就开几号 理论上可行(frp不在乎中转机是不是独立IP 只要端口能通)但我没验证过(核对点) 真要试先确认NAT VPS给了多少个TCP转发额度 ## 版本坑:ini 和 toml frp 从 0.52.0 起配置文件从 `.ini` 换成了 `.toml` 字段名全变了(`bind_port` → `bindPort`)网上大量老教程还是ini写法 直接抄会报错——看教程先看它按哪个版本写的 下载程序时也尽量和教程对版本 ## 和另外两条路怎么选 一句话版:偶尔调试选ngrok 长期网站选Tunnel 有VPS想全权掌控选FRP——完整对比表见[[06-内网穿透选型对比|06-内网穿透选型对比]] --- ⬅️ [[04-内网穿透 ngork|内网穿透 ngork]] 🏠 [[00-网络与项目|00-网络与项目]] ➡️ [[06-内网穿透选型对比|内网穿透选型对比]]